package api;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import domain.User;
import exception.LoginException;
import exception.RegisterException;
import service.UserService;
import utils.GetRequestJsonUtils;
import utils.Response;
import utils.ResponseCode;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.UUID;

public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //        提前参数；
        User user=null;
        Response build=null;
        try {
            JSONObject object = GetRequestJsonUtils.getRequestJsonObject(req);
            String user_str = object.getString("user");
//        转换参数成对象；
             user = JSON.parseObject(user_str, User.class);
            UUID uuid = UUID.randomUUID();//生成一个随机的字符串，不会出现相同字符串
            user.setActiveCode(uuid.toString());
        }catch (Exception e){
            e.printStackTrace();
            build=Response.build(ResponseCode.ERROR_PARANS);
            resp.setContentType("application/json;charset=utf-8");
            resp.getWriter().write(JSON.toJSON(build).toString());
            return;
        }
//        去查询数据库表中是否有这个记录；
        UserService userService=new UserService();
        try{
            userService.register(user);//注册成功
            build=Response.build(ResponseCode.OK_REGISTER);
        }catch (RegisterException e){
            e.printStackTrace();
            build=Response.build(e.getError());
        }
//        判断为空，则返回登录失败的消息对象；
//        把消息对象转化成字符串，返回浏览器
        resp.setContentType("application/json;charset=utf-8");
        resp.getWriter().write(JSON.toJSON(build).toString());

    }
}
